package main

/*

# 基础镜像
FROM alpine:3.12

# 维护者信息（使用 LABEL 替代 MAINTAINER）
LABEL maintainer="author:zydh@qq.com"

# docker build 时执行命令 - 创建目录
RUN mkdir -p "/go/src/goindex"

# 工作目录
WORKDIR "/go/src/goindex"

# 拷贝 把系统文件拷贝到容器中去
COPY goindex /go/src/goindex/goindex

# 确保可执行文件是可执行的
RUN chmod +x /go/src/goindex/goindex

# docker run 时执行命令---docker run 进来时就在指定的工作目录找/go/src/goindex/
ENTRYPOINT ["./goindex"]





-----------------01：本地编译-----------------
wind编译后在liunx上运行

！！！！！！！！！！！重点这三个set必须和go build 一起！！而不是分开设置！！！！！！！！！！

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build -o [这是项目名，随便取，但不能带.exe](如goindex)
go build -o goindex


--把编译好的二进制文件goindex上传到liunx服务器上/zydh/golang/src/{ProName}

在服务器上用命令 【file  goindex】 检查上传的文件格式


file goindex
goindex: PE32+ executable (console) x86-64, for MS Windows, 15 sections---------------格式错误
#格式错误-------liunx上运行报错 exec ./goindex: exec format error---格式错误


------------正确格式
#goindex: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
#
#goindex: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=O0n7TAL0BmV0tcS23Hej/6lWbB6mEvNKekGF0bKh5/kNz8AxEiWaxfNKH1RcKf/w76b319_ceVJVwBDCkgl, with debug_info, not stripped

#




-----------------02：编写Dockerfile-----------------

# 基础镜像,alpine:一款开源社区开发的、基于musl libc和BusyBox的【轻量级Linux发行版】
FROM alpine:3.12									 ------需要指定版本

# 维护者信息（使用 LABEL 替代 MAINTAINER）
LABEL maintainer="author:zydh@qq.com"

# docker build 时执行命令 - 创建目录
RUN mkdir -p "/go/src/goindex"					     ---------在【容器】内创建/go/src/goindex文件夹

# 工作目录
WORKDIR "/go/src/goindex"							 ----------指定【容器】的工作目录

# 拷贝 把系统文件拷贝到容器中去
COPY goindex /go/src/goindex/goindex				 ----------把上面编译的二进制文件上传到liunx上，且把这个文件拷贝到【容器】内

# 确保可执行文件是可执行的
RUN chmod +x /go/src/goindex/goindex				 ----------添加执行权限

# docker run 时执行命令
ENTRYPOINT ["./goindex"]							 ----------docker run 运行时自动执行



-----------------03：上传-----------------
把编译好的二进制文件(goindex)上传到服务器上/zydh/golang/src/goindex
把编写好的Dockerfile上传到和二进制文件(goindex)同一个目录内/zydh/golang/src/goindex

/zydh/golang/src/goindex/
|--goindex【它是编译好的二进制文件】
|--Dockerfile【它是Dockerfile文件】


上传后使用file检查文件格式是否正确，第一步

-----------------04：根据dockfile构建docker镜像-----------------
！！！与Dockerfile同目录下！！，

docker build -f dockerfile地址  -t  name-项目名:tag-版本号  . 【这一个小点也不能忘】

docker build -f Dockerfile -t goind:0.1 .


-----------------05：运行docker镜像-----------------

# 运行 Docker 镜像
docker run --privileged=true -d --name goinde -p 80:8080 goind:0.1  ----------  无-it




-----------------06：如果报错，查看错误信息-----------------

# 检查 Docker 容器日志

docker logs goinde
exec ./goindex: exec format error    -----这里就是go bulid 编译时格式错误



-----------------07：修改Dockerfile或重新编译后-----------------

#如果是线上项目，无法删除，则往上打 tag: v1.0,v2.0.....


#清除创建的错误容器
docker ps -a     -----查看所有的容易

docker rm -f $(docker ps -aq)  ------清除




#查看镜像
docker images


docker rmi 镜像ID  --------删除指定镜像


# 清理旧的 Docker 镜像（可选）
docker rmi goind:0.1





-----------------08：其余注意-----------------

在没有用ssl证书时，浏览器默认是https；，而不是http，没有ssl就访问不到










*/
